// pages/category/category.js
Page({
  data: {
    categories: ['电子产品', '运动用品', '家用电器', '服装', '美妆'], // 示例分类
    selectedCategory: '',    // 当前选中的分类
    categoryProducts: [],    // 当前分类下的商品
    currentPage: 1,          // 当前分页页码
    pageSize: 10,            // 每页加载的商品数量
    isLoading: false,        // 是否正在加载数据的标志
    hasMore: true            // 是否还有更多数据可加载
  },

  // 页面加载时触发的生命周期函数
  onLoad: function() {
    this.setData({
      selectedCategory: '电子产品'
    },() => {
      this.fetchCategoryProducts() // 加载选中分类的商品
    })
  },

  // 分类项点击事件处理函数
  onCategoryTap: function(e) {
    const category = e.currentTarget.dataset.category
    this.setData({
      selectedCategory: category,
      categoryProducts: [], // 清空当前商品列表
      currentPage: 1,
      hasMore: true
    }, () => {
      this.fetchCategoryProducts() // 加载选中分类的商品
    })
  },

  // 获取分类下的商品的方法
  fetchCategoryProducts: function() {
    // 如果当前正在加载数据或没有更多数据，则不执行后续操作
    if (this.data.isLoading || !this.data.hasMore) return

    // 设置加载状态为 true，表示正在加载数据
    this.setData({
      isLoading: true
    })

    // 访问云数据库中的 'products' 集合
    wx.cloud.database().collection('products')
      .where({
        category: this.data.selectedCategory // 过滤条件：按分类
      })
      .orderBy('sales', 'desc') // 按照销售量 'sales' 字段降序排序
      .skip((this.data.currentPage - 1) * this.data.pageSize) // 跳过已加载的页数，实现分页
      .limit(this.data.pageSize) // 限制每次查询的商品数量
      .get({
        // 查询成功的回调函数
        success: res => {
          const newProducts = res.data // 获取新加载的商品数据
          this.setData({
            categoryProducts: this.data.categoryProducts.concat(newProducts), // 将新商品追加到现有分类商品列表中
            currentPage: this.data.currentPage + 1, // 更新当前页码，准备加载下一页
            hasMore: newProducts.length === this.data.pageSize // 判断是否还有更多数据可加载
          })
        },
        // 查询失败的回调函数
        fail: err => {
          wx.showToast({
            title: '获取商品失败',
            icon: 'none'
          })
          console.error('获取商品失败', err)
        },
        // 无论成功还是失败，查询完成后都会执行的回调函数
        complete: () => {
          this.setData({
            isLoading: false // 取消加载状态
          })
        }
      })
  },

  // 上拉加载更多事件处理函数
  onReachBottom: function() {
    this.fetchCategoryProducts() // 调用获取更多分类商品的方法
  },

  // 点击商品跳转到详情页
  viewProduct: function(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/productDetail/productDetail?id=${id}`
    })
  }
})
